package com.banmao.algorithm.No901To1100.No904;

import java.util.HashMap;

public class Solution1 {

    public static int totalFruit(int[] fruits) {

        int left = 0; // 左边界
        int right = 0; // 右边界
        int length = 0; // 长度

        // 存放水果类型的篮子，key为水果类型，value为水果类型出现的次数
        HashMap<Integer, Integer> basket = new HashMap<>();
        for(; right <= fruits.length - 1; right++) {
            // 先把右边界指向的水果类型放一个篮子
            Integer rTimes = basket.get(fruits[right]);
            if(rTimes == null) {
                rTimes = 0;
            }
            basket.put(fruits[right], ++rTimes);
            //length = right - left + 1;

            // 如果篮子数量大于2，就抛弃左边界指向的水果类型的篮子，收缩左边界，再把左边界指向的水果类型放一个篮子
            // 直到篮子数量不大于2
            while (basket.size() > 2) {

                Integer lTimes = basket.get(fruits[left]) - 1;
                if(lTimes <= 0) {
                    basket.remove(fruits[left]);
                } else {
                    basket.put(fruits[left], lTimes);
                }

                left++;

            }
            int tempLen = right - left + 1;
            length = Math.max(tempLen, length);

        }
        return length;

    }

}
